Package de.yaams.extensions.rgssproject

Source Code of de.yaams.extensions.rgssproject.TestPlay

/**
*
*/
package de.yaams.extensions.rgssproject;

import java.awt.Component;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import org.apache.commons.lang.SystemUtils;

import de.yaams.maker.helper.NetHelper;
import de.yaams.maker.helper.SystemHelper;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.extensions.IExtension;
import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.YSettingHelper;
import de.yaams.maker.helper.gui.form.FormButton;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.list.BasisListElement;
import de.yaams.maker.helper.gui.tabs.SplitActionListElement;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.project.Project;
import de.yaams.maker.programm.project.ProjectSett;
import de.yaams.maker.programm.project.tab.ProjectOptionsTab;
import de.yaams.maker.programm.project.tab.ProjectTab;
import de.yaams.maker.programm.tabs.YaTab;

/**
* @author abby
*
*/
public class TestPlay {

  /**
   * @param args
   */
  public static void addTestPlay() {
    // add play button
    ExtentionManagement.add("yaframe.openTab", new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        YaTab tab = (YaTab) objects.get("tab");

        // right tab?
        if (tab instanceof ProjectTab) {

          // has project?
          final Project p = ((ProjectTab) tab).getProject();
          if (!RGSSProjectHelper.is(p, true, true)) {
            return;
          }

          // add run button
          if (ProjectSett.get(p, "run_showOnEveryTab", true) && tab.getToolbar() != null) {
            tab.getToolbar().add(YFactory.tb(I18N.t("Start ein Testspiel"), "monitor_opts", new AE() {

              @Override
              public void run() {
                runProject(p);

              }
            }));
          }
        }

      }
    });

    // add options
    // add run settings
    ExtentionManagement.add(ProjectOptionsTab.EXADD, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        ArrayList<BasisListElement> eles = (ArrayList<BasisListElement>) objects.get("list");

        // right project?
        if (!RGSSProjectHelper.is((Project) objects.get("project"), true, true)) {
          return;
        }

        // add it
        eles.add(new SplitActionListElement(I18N.t("Starte Spiel"), "", "monitor_opts") {

          @Override
          protected Component getComponent(final Project p) {

            // add settings
            FormBuilder f = new FormBuilder("testgame");
            f.getHeader("basic").setTitle(I18N.t("Starte Spiel")).setIcon("monitor_opts");
            f.addElement("basic.native",
                YSettingHelper.bool(p, I18N.t("Benutze native Engine, wenn möglich. (Game.exe)"), "run_native", true));

            // add display
            f.addElement("basic.button",
                YSettingHelper.bool(p, I18N.t("Zeige 'Start ein Testspiel' auf jedem Tab."), "run_showOnEveryTab", true));

            // add display
            f.addElement("basic.play", new FormButton(I18N.t("Starte Spiel"), "monitor_opts", new AE() {

              @Override
              public void run() {
                runProject(p);

              }
            }));

            return f.getPanel(true);
          }
        });
      }
    });

  }

  /**
   * Start the testplay button
   *
   * @param p
   */
  public static void runProject(final Project p) {
    // save all open tabs
    p.save();

    new Thread(new Runnable() {

      @Override
      public void run() {

        // native or generic launcher?
        if (SystemUtils.IS_OS_WINDOWS && ProjectSett.get(p, "run_native", true)) {
          SystemHelper.viewFile(new File(p.getPath(), "Game.exe"));
        } else {
          File file = new File(YAamsCore.programPath, "YAamsRGSSPlayer.jar");

          // exist?
          if (!file.exists()) {
            // download it!
            NetHelper.downloadFile(file, NetHelper.getContentAsString("http://www.yaams.de/file/index.php?typ=player"));
          }

          // run it
          SystemHelper.runExternal(new String[] { "java", "-jar", "-Xms128m", "-Xmx512M", file.getAbsolutePath(),
              p.getPath().getAbsolutePath() }, false);
        }
      }
    }).start();

  }

}
TOP

Related Classes of de.yaams.extensions.rgssproject.TestPlay

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.